package it.scambiocorse.dao;

import it.scambiocorse.model.CodaType;
import it.scambiocorse.rowmapper.CodaRowMapper;

import java.sql.ResultSet;

import org.apache.log4j.Logger;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor;

public class UtilityDao extends JdbcDaoSupport implements UtilityService {
	 
	final Logger logger = Logger.getLogger(getClass());

  protected void initDao() throws Exception {
    super.initDao();
    getJdbcTemplate().setNativeJdbcExtractor(new SimpleNativeJdbcExtractor());

  }
  
	
	public boolean checkAndSetConc(int in) throws Exception {
		
		String metodo = "checkConcorrenza(...)";
		logger.warn(metodo+" - Inizio");
		int idOcco = 0;
		boolean ret = false;
		String sql = "SELECT * FROM conco_tab where id_occo = ?";
			try {
				
				idOcco = getJdbcTemplate().queryForInt(sql, new Object[] {in});
				
				if (idOcco != in) {
					logger.warn(metodo+" Concorrenza non esistente, procedo all'inserimento della concorrenza");
 					sql = "INSERT INTO conco_tab values (?)";
					idOcco = getJdbcTemplate().update(sql, new Object[] {in});
					ret = true;
				} else {
					logger.warn(metodo+" Esito chiamata: OK, l'occorenza "+idOcco+" e' occupata");
					
				}
				
			}
				catch (EmptyResultDataAccessException em) {
 					sql = "INSERT INTO conco_tab values (?)";
					idOcco = getJdbcTemplate().update(sql, new Object[] {in});
					ret = true;
			  	logger.warn(metodo+" Concorrenza non esistente procedo all'inserimento della concorrenza");
			  }
			  
			  catch (Exception e) {
			  	logger.warn(metodo+" Si e' verificato un errore GENERICO durante la seguente chiamata  \""+sql);
			  	logger.error(e);
			  	throw e;
			  }
			  logger.warn(metodo+" Fine");
		return ret;
	}


	public void deleteConc(int in) throws Exception {
		String metodo = "deleteConc(...)";
		logger.warn(metodo+" - Inizio");
		boolean ret = false;
		int esito = 0;
		String sql = "DELETE FROM conco_tab WHERE id_occo = ?";
			try {
				
					esito = getJdbcTemplate().update(sql, new Object[] {in});
					if (esito > 0) {
						logger.warn(metodo+" Concorrenza"+in+" eliminata");
					} else {
						logger.warn(metodo+" Esito chiamata: OK, l'occorenza "+in+" non esiste");
					}
				
			} catch (Exception e) {
			  	logger.warn(metodo+" Si e' verificato un errore GENERICO durante la seguente chiamata  \""+sql);
			  	logger.error(e);
			  	throw e;
			  }
			  logger.warn(metodo+" Fine");
	}

	
}

